#include <iostream>
using namespace std;
// 自动类型推导，必须推导出一致的数据类型T才可以使用
// 利用模板提供通用的交换函数
template <typename T>  // typename可以替换成class
void mySwap(T& a, T& b) {
    T temp = a;
    a = b;
    b = temp;
}

// 1.自动类型推导，必须推导出一直的数据类型T，才可以使用
void test01() {
    int a = 10;
    int b = 20;
    char c = 'c';
    // mySwap(a, c);//错误！推导不出一直的T类型
    mySwap(a, b);
    cout << "a = " << a << endl;
    cout << "a = " << a << endl;
}
// 2. 模板必须要确定出T的数据类型，才可以使用
template <class T>
void func() {
    cout << "func调用" << endl;
}

void test02() {
    // func();
    func<int>();  // 必须得确定指定的类型
}

int main() {
    test01();
    system("pause");
    return 0;
}